package dominio;

import java.io.Serializable;
import java.util.LinkedList;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

import persistencia.dao.CategoriaDAO;
import persistencia.dao.ProductoDAO;


@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable="true")
public class Categoria implements Serializable{
	

	private static final long serialVersionUID = 1L;
	@PrimaryKey  
	@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)  
	private Long id;
	@Persistent 
	private String name;
	@Persistent
	private String descripcion;
	@Persistent
	private Long id_propietario;
	
	/* Constructor */
	public Categoria(String name, String descripcion, Long id_propietario) {
		super();
		this.name = name;
		this.descripcion = descripcion;
		this.id_propietario = id_propietario;
	}
	
	public Categoria() {
		super();
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion= descripcion;
	}
	
	public Long getId_propietario() {
		return id_propietario;
	}

	public void setId_propietario(Long id_propietario) {
		this.id_propietario = id_propietario;
	}
	

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public boolean create(boolean initOfTransaction, boolean endOfTransaction){
		return CategoriaDAO.create(this, initOfTransaction, endOfTransaction);
	}
	public static Categoria read(Long id, boolean partOfTransaction){
		return CategoriaDAO.read(id, partOfTransaction);
	}
	
	public Categoria update(Categoria cat, boolean partOfTransaction){
		return CategoriaDAO.update(cat, partOfTransaction);
	}
	
	public Boolean delete(boolean partOfTransaction){
		return CategoriaDAO.delete(this.id, partOfTransaction);
	}
	
	public Categoria read(boolean partOfTransaction){
		return CategoriaDAO.read(this.id, partOfTransaction);
	}
	
	public static LinkedList<Categoria> read(Long id_usuario, String nombre, Boolean partOfTransaction){
		return CategoriaDAO.read(id_usuario, nombre, partOfTransaction);
	}
	
	public static LinkedList<Categoria> readByUserId(Long id, Boolean partOfTransaction){
		return CategoriaDAO.readByUserId(id ,partOfTransaction);
	}
	
	public static LinkedList<Categoria> readAll(Boolean partOfTransaction){
		return CategoriaDAO.readAll(partOfTransaction);
	}
}